// 路由配置文件
import { createRouter,createWebHashHistory } from 'vue-router'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { $get } from '@/utils/request'
import { AuthApi } from '@/api/path'


// 定义路由信息的数组
const routes = [
    // 默认跳转
    {
        path:'/',
        redirect:'/home/chat'
    },
    // 登录页
    // PS：采用多入口文件，这里就不用通过路由跳转到登录页面了，改为使用浏览器的location.href='./login.html'跳转
    // {
    //     path:'/login',
    //     name:'Login',
    //     component:()=>import('../components/Login.vue')
    // },

    // 主页
    {
        path:'/home',
        name:'Home',
        component:()=>import('../components/Home.vue'),
        children:[
            {
                path:'chat',
                name:'Chat',
                component:()=>import('../components/Chat.vue')
            },
            {
                path:'user',
                name:'User',
                component:()=>import('../components/User.vue')
            },
            {
                path:'memo',
                name:'Memo',
                component:()=>import('../components/Memo.vue')
            }
        ],
        redirect:'/home/chat'
    },
    

    // 404页面（放在最后）
    {
        // 动态路由匹配404页面
        // 将匹配所有内容并将其放在`$route.params.pathMatch`下
        path:'/:pathMatch(.*)*',
        name:'Error404',
        component:()=>import('../components/Error404.vue')
    },
]

// 创建一个路由对象
const router = createRouter({
    history:createWebHashHistory(),
    routes
})

// 定义路由导航前置守卫
router.beforeEach((to,from,next)=>{
    // console.log('准备跳转到:', to.path);
    // if (to.path === '/login') {
    //     return next();  // 允许访问登录页面
    // }
    // PS：这里的登录页不通过路由跳转了，而是通过location.href='./login.html'的方式跳转，所以这里的放开逻辑不用了

    // 否则，调用后端接口检查是否已登录
    $get(AuthApi.checkLogin)
        .then(res => {
            if (res.success && res.data) {
                next();
            } else {
                console.log('beforeEach-checkLogin-res: ', res)
                location.href = './login.html';
            }
        })
        .catch(error => {
            location.href = './login.html';
        });

    NProgress.start(); // 开始加载进度条
})

// 定义路由导航后置守卫
router.afterEach((to,from)=>{
    NProgress.done()
})

export default router